if SERVER then
	registerCommand("perform", "Performs a command on the player you specify - you may also perform on the server by using server in place of a player identity - command is specified after the player", function(param)
		//Works on server and client
		local performMsg = "caller performed cmd on target"
		if param["settings"]["perform_msg"] then
			performMsg = param["settings"]["perform_msg"]
		end
		local performTable = {}
		performTable["caller"] = getCaller(param[1])
		local targs = string.Explode(" ", param[3])
		if table.Count(targs) >= 2 then
			name = targs[1]
			table.remove(targs, 1)
			local cmd = table.concat(targs, " ")
			performTable["cmd"] = cmd
			if name == "server" then
					performTable["target"] = "Server"
					display(param[1], "perform", { nil } , parseDisplayMessage(performMsg, performTable))
					game.ConsoleCommand(cmd .. "\n")
			else
				local plyTarg = getPlayerByName(name)
				if plyTarg then
					performTable["target"] = plyTarg:GetName()
					display(param[1], "perform", { plyTarg } , parseDisplayMessage(performMsg, performTable))
					plyTarg:ConCommand(cmd .. "\n")
				end
			end
		end
	end)
end